#include <iostream>  
#include <memory>  
  
class MyClass {  
public:  
    MyClass(int value) : value_(value) {  
        std::cout << "MyClass constructor called with value: " << value << std::endl;  
    }  
  
    ~MyClass() {  
        std::cout << "MyClass destructor called" << std::endl;  
    }  
  
    void printValue() {  
        std::cout << "Value: " << value_ << std::endl;  
    }  
  
private:  
    int value_;  
};  
  
int main() {  
    // 使用std::make_unique创建一个unique_ptr  
    std::unique_ptr<MyClass> ptr = std::make_unique<MyClass>(42);  
  
    // 使用unique_ptr调用成员函数  
    ptr->printValue();  
  
    // 当unique_ptr离开其作用域时，它会自动删除它所指向的对象  
    // 因此，下面的输出将显示MyClass的析构函数被调用  
    return 0;  
}